iT邦幫忙

DAY 23
1

Android 探索之備忘錄系列 第 23

Android 探索之備忘錄 [Day23-BoundService]

  • 分享至 

  • xImage
  •  

Bound Service

當我們寫好一個service時, 在某些情況(Activity, Fragment, ... etc)會需要和service作資料交換的動作,
此時可以利用bindService()來和service建立連線
bindService()是非同步的method, 等連線建立後會觸發onServiceConnected(),此時才能與service做溝通

// xxxActivity.java
LocalService mService;
private ServiceConnection mConnection = new ServiceConnection() {

    public void onServiceConnected(ComponentName className, IBinder service) {
        LocalBinder binder = (LocalBinder) service;
        mService = binder.getService();
        mBound = true;
    }
    public void onServiceDisconnected(ComponentName className) {
        Log.e(TAG, "onServiceDisconnected");
        mBound = false;
    }
};

Intent intent = new Intent(this, LocalService.class);
bindService(intent, mConnection, Context.BIND_AUTO_CREATE);

不過當Android 的service是以bindService的方式被叫起來的時候(非startService), Android系統會自己在所有client 與service切斷連線時把這個service給destroy, 因此我們不需要特別去注意管理service是否還會存活,而如果是透過一般startService起來的話, 就必須在service呼叫stopSelf()或是透過其他元件呼叫stopService()來停止, 否則service就會一直存活在系統中(也許會被系統在未來某個時間砍掉)


上一篇
Android 探索之備忘錄 [Day22-ccache]
下一篇
Android 探索之備忘錄 [Day24-PhoneStateListener]
系列文
Android 探索之備忘錄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言